// pages/room-items/index.js
Page({
  data: {
    roomId: '',
    roomName: '',
    userRole: 'landlord', // 用户角色
    items: [], // 物品列表
    loading: false
  },

  async onLoad(options) {
    if (options.roomId) {
      this.setData({ roomId: options.roomId });
      await this.loadUserRole();
      await this.loadRoomItems();
    } else {
      wx.showToast({
        title: '房间ID不能为空',
        icon: 'none'
      });
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
    }
  },

  // 加载用户角色
  async loadUserRole() {
    try {
      const res = await wx.cloud.callFunction({
        name: 'user',
        data: {
          apiType: 'getUserInfo'
        }
      });

      if (res.result.res.code === 200) {
        const userRole = res.result.res.data.role || 'landlord';
        this.setData({ userRole: userRole });
      }
    } catch (error) {
      console.error('加载用户角色失败:', error);
    }
  },

  // 加载房间物品
  async loadRoomItems() {
    this.setData({ loading: true });
    
    try {
      // 先获取房间信息（包含房间名称）
      const roomRes = await wx.cloud.callFunction({
        name: 'room',
        data: {
          apiType: 'getRoomInfo',
          roomId: this.data.roomId
        }
      });

      if (roomRes.result.res.code === 200) {
        const roomInfo = roomRes.result.res.data;
        this.setData({ roomName: roomInfo.room || '房间' });
      }

      // 获取物品列表
      const res = await wx.cloud.callFunction({
        name: 'room',
        data: {
          apiType: 'getRoomItems',
          roomId: this.data.roomId
        }
      });

      if (res.result.res.code === 200) {
        const items = res.result.res.data || [];
        this.setData({
          items: items,
          loading: false
        });
      } else {
        wx.showToast({
          title: res.result.res.msg || '加载失败',
          icon: 'none'
        });
        this.setData({ loading: false });
      }
    } catch (error) {
      console.error('加载房间物品失败:', error);
      wx.showToast({
        title: '加载失败，请重试',
        icon: 'none'
      });
      this.setData({ loading: false });
    }
  },

  // 切换物品是否存在（仅房东）
  onToggleExists(e) {
    if (this.data.userRole !== 'landlord') {
      wx.showToast({
        title: '只有房东可以修改物品状态',
        icon: 'none'
      });
      return;
    }

    const index = e.currentTarget.dataset.index;
    const items = this.data.items;
    items[index].exists = !items[index].exists;
    // 如果设置为不存在，自动清除丢失报告
    if (!items[index].exists) {
      items[index].reportedMissing = false;
    }
    this.setData({ items: items });
  },

  // 租客报告物品丢失
  onReportMissing(e) {
    if (this.data.userRole !== 'tenant') {
      wx.showToast({
        title: '只有租客可以报告物品丢失',
        icon: 'none'
      });
      return;
    }

    const index = e.currentTarget.dataset.index;
    const items = this.data.items;

    if (!items[index]) {
      return;
    }

    if (items[index].reportedMissing) {
      return;
    }

    items[index].reportedMissing = true;
    this.setData({ items: items });
  },

  // 租客取消丢失报告
  onCancelReport(e) {
    if (this.data.userRole !== 'tenant') {
      wx.showToast({
        title: '只有租客可以取消报告',
        icon: 'none'
      });
      return;
    }

    const index = e.currentTarget.dataset.index;
    const items = this.data.items;

    if (!items[index]) {
      return;
    }

    if (!items[index].reportedMissing) {
      return;
    }

    items[index].reportedMissing = false;
    this.setData({ items: items });
  },

  // 重置物品丢失状态（房东）
  onResetReportedMissing(e) {
    if (this.data.userRole !== 'landlord') {
      wx.showToast({
        title: '只有房东可以重置状态',
        icon: 'none'
      });
      return;
    }

    const index = e.currentTarget.dataset.index;
    const items = this.data.items;
    if (items[index]) {
      items[index].reportedMissing = false;
      this.setData({ items: items });
    }
  },

  // 初始化物品列表（房东）
  onInitItems() {
    if (this.data.userRole !== 'landlord') {
      wx.showToast({
        title: '只有房东可以初始化物品',
        icon: 'none'
      });
      return;
    }

    wx.showModal({
      title: '初始化物品',
      content: '将使用预设物品列表覆盖当前物品，是否继续？',
      success: async (res) => {
        if (res.confirm) {
          wx.showLoading({ title: '初始化中...', mask: true });
          try {
            const result = await wx.cloud.callFunction({
              name: 'room',
              data: {
                apiType: 'resetRoomItems',
                roomId: this.data.roomId
              }
            });

            wx.hideLoading();

            if (result.result.res.code === 200) {
              const items = result.result.res.data.items || [];
              this.setData({ items });
              wx.showToast({
                title: '初始化完成',
                icon: 'success'
              });
            } else {
              wx.showToast({
                title: result.result.res.msg || '初始化失败',
                icon: 'none'
              });
            }
          } catch (error) {
            console.error('初始化物品失败:', error);
            wx.hideLoading();
            wx.showToast({
              title: '初始化失败，请重试',
              icon: 'none'
            });
          }
        }
      }
    });
  },

  // 添加物品（仅房东）
  onAddItem() {
    if (this.data.userRole !== 'landlord') {
      wx.showToast({
        title: '只有房东可以添加物品',
        icon: 'none'
      });
      return;
    }

    wx.showModal({
      title: '添加物品',
      editable: true,
      placeholderText: '请输入物品名称',
      success: (res) => {
        if (res.confirm && res.content && res.content.trim()) {
          const items = this.data.items;
          items.push({
            name: res.content.trim(),
            exists: true,
            reportedMissing: false
          });
          this.setData({ items: items });
        }
      }
    });
  },

  // 删除物品（仅房东）
  onDeleteItem(e) {
    if (this.data.userRole !== 'landlord') {
      wx.showToast({
        title: '只有房东可以删除物品',
        icon: 'none'
      });
      return;
    }

    const index = e.currentTarget.dataset.index;
    const itemName = this.data.items[index].name;

    wx.showModal({
      title: '确认删除',
      content: `确定要删除"${itemName}"吗？`,
      success: (res) => {
        if (res.confirm) {
          const items = this.data.items;
          items.splice(index, 1);
          this.setData({ items: items });
        }
      }
    });
  },

  // 保存物品列表
  async saveItems() {
    wx.showLoading({ title: '保存中...' });

    try {
      const res = await wx.cloud.callFunction({
        name: 'room',
        data: {
          apiType: 'updateRoomItems',
          roomId: this.data.roomId,
          items: this.data.items
        }
      });

      wx.hideLoading();

      if (res.result.res.code === 200) {
        wx.showToast({
          title: '保存成功',
          icon: 'success'
        });
        
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      } else {
        wx.showToast({
          title: res.result.res.msg || '保存失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('保存物品列表失败:', error);
      wx.hideLoading();
      wx.showToast({
        title: '保存失败，请重试',
        icon: 'none'
      });
    }
  }
});

